#include "Engine/StdAfx.h"
#include <Engine/Math/Vec3.h>
#include <Engine/Math/Mat33.h>
#include <Engine/Misc/StringUtils.h>

namespace fastbird
{
	const Vec3 Vec3::UNIT_X(1.f, 0, 0);
	const Vec3 Vec3::UNIT_Y(0, 1.f, 0);
	const Vec3 Vec3::UNIT_Z(0, 0, 1.f);
	const Vec3 Vec3::ZERO(0, 0, 0);

	Vec3::Vec3(const char* s)
	{
		char* next;
		x = 0;
		y = 0;
		z = 0;
		if (s!=0)
		{
			x = (float)strtod(s, &next);
			if (next!=0)
			{
				StepToDigit(&next);
				y = (float)strtod(next, &next);
				if (next!=0)
				{
					StepToDigit(&next);
					z = (float)strtod(next, 0);
				}
			}
		}			
	}

	inline Vec3 Vec3::operator* (const Mat33& r) const
	{
			return Vec3(	x * r[0][0] + y * r[1][0] + z * r[2][0],
							x * r[0][1] + y * r[1][1] + z * r[2][1],
							x * r[0][2] + y * r[1][2] + z * r[2][2]);
	}
}